package com.maimang.platform.dsp.constant;


import com.maimang.platform.common.config.Global;
import com.maimang.platform.lang.StringUtils;

/**
 * @author Rocky
 * @version 1.0.0
 * @classname BaseApi
 * @description <br>巨量引擎商业开放平台API接口</br>
 * @date 2019-07-23 15:52
 * @email jintaozhao@qq.com
 */
public class BaseApi {

	private static String NAME = "application-dsp.yml";

	private static boolean isDemo = getConfig("run.mode.demo").equalsIgnoreCase("true") ? true : false;


	/**
	 * 获取配置
	 */
	private static String getConfig(String key) {
		return Global.getConfigValue(NAME, key);
	}

	/**
	 * 获取api地址前缀
	 *
	 * @return marketing api地址
	 */
	private static String getBaseUrl() {
		if (isDemo) {
			return getConfig("tt.demo.base_url");
		}
		return getConfig("tt.prod.base_url");
	}

	/**
	 * 获取APPID
	 *
	 * @return appid
	 */
	protected static String appId() {
		if (isDemo) {
			return getConfig("tt.demo.appid");
		}
		return getConfig("tt.prod.appid");
	}

	/**
	 * 获取生产环境密钥
	 *
	 * @return Secret
	 */
	protected static String getSecret() {
		return getConfig("tt.prod.secret");
	}

	/**
	 * 获取生产环境授权回调地址
	 *
	 * @return Secret
	 */
	protected static String getCallback() {
		return getConfig("tt.prod.callback");
	}

	/**
	 * 广告主授权URL
	 *
	 * @param advertiserId 广告主id
	 * @return
	 */
	public static String oauth(Integer advertiserId) {
		String appId = appId();
		String state = advertiserId.toString();
		// 权限范围
		String scope = new String();
		return makeOauthUrl(appId, state, scope, getCallback());
	}

	/**
	 * @param appId       应用APPID
	 * @param state       可选，可用于传递自定义信息，回调时会原样带回。
	 *                    常见应用比如将广告主账号作为自定义参数，回调时以区分授权码对应的广告主
	 * @param scope       可选，授权的权限范围，不传时代表当前应用拥有的所有权限
	 * @param redirectUrl 必填，由开发者自行提供和定义，用于授权成功跳转并接受回调信息。
	 *                    注意，回调链接此处限定必须和申请应用时的回调链接一致。
	 * @return
	 */
	protected static String makeOauthUrl(String appId, String state, String scope, String redirectUrl) {
		String oauthUrl = getConfig("tt.audit.oauth");
		return StringUtils.format(oauthUrl, state, scope, redirectUrl);
	}


	/**
	 * @param apiContent api具体接口
	 * @return 构建后的请求
	 */
	protected static String makeUrl(String apiContent) {
		return StringUtils.format(getBaseUrl(), apiContent);
	}
}
